<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/personality.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/personality.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_noref.html#_X0xJTlVYX1BFUlNPTkFMSVRZX0hfMA__"><span class="b">_LINUX_PERSONALITY_H</span></a>
<a name="2" /><span class="True">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X0xJTlVYX1BFUlNPTkFMSVRZX0hfMA__"><span class="b">_LINUX_PERSONALITY_H</span></a>
<a name="3" /><span class="True">       3:</span> 
<a name="4" /><span class="True">       4:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">uapi</span><span class="f">/</span><span class="b">linux</span><span class="f">/</span><a href="cpu.c_macros_noref.html#_cGVyc29uYWxpdHlfMA__"><span class="b">personality</span></a><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="5" /><span class="True">       5:</span> 
<a name="6" /><span class="True">       6:</span> 
<a name="7" /><span class="True">       7:</span> <span class="k">/*</span>
<a name="8" /><span class="True">       8:</span> <span class="k"> * Handling of different ABIs (personalities).</span>
<a name="9" /><span class="True">       9:</span> <span class="k"> */</span>
<a name="10" /><span class="True">      10:</span> 
<a name="11" /><span class="True">      11:</span> <span class="m">struct</span> <span class="b">exec_domain</span><span class="f">;</span>
<a name="12" /><span class="True">      12:</span> <span class="m">struct</span> <span class="b">pt_regs</span><span class="f">;</span>
<a name="13" /><span class="True">      13:</span> 
<a name="14" /><span class="True">      14:</span> <span class="m">extern</span> <span class="m">int</span>        <span class="b">register_exec_domain</span><span class="f">(</span><span class="m">struct</span> <span class="b">exec_domain</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="15" /><span class="True">      15:</span> <span class="m">extern</span> <span class="m">int</span>        <span class="b">unregister_exec_domain</span><span class="f">(</span><span class="m">struct</span> <span class="b">exec_domain</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="16" /><span class="True">      16:</span> <span class="m">extern</span> <span class="m">int</span>        <span class="b">__set_personality</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span><span class="f">)</span><span class="f">;</span>
<a name="17" /><span class="True">      17:</span> 
<a name="18" /><span class="True">      18:</span> 
<a name="19" /><span class="True">      19:</span> <span class="k">/*</span>
<a name="20" /><span class="True">      20:</span> <span class="k"> * Description of an execution domain.</span>
<a name="21" /><span class="True">      21:</span> <span class="k"> * </span>
<a name="22" /><span class="True">      22:</span> <span class="k"> * The first two members are refernced from assembly source</span>
<a name="23" /><span class="True">      23:</span> <span class="k"> * and should stay where they are unless explicitly needed.</span>
<a name="24" /><span class="True">      24:</span> <span class="k"> */</span>
<a name="25" /><span class="True">      25:</span> <span class="m">typedef</span> <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">handler_t</span><span class="f">)</span><span class="f">(</span><span class="m">int</span><span class="f">,</span> <span class="m">struct</span> <span class="b">pt_regs</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="26" /><span class="True">      26:</span> 
<a name="27" /><span class="True">      27:</span> <span class="m">struct</span> <span class="b">exec_domain</span> <span class="f">{</span>
<a name="28" /><span class="True">      28:</span>     <span class="m">const</span> <span class="m">char</span>        <span class="f">*</span><span class="b">name</span><span class="f">;</span>        <span class="k">/* name of the execdomain */</span>
<a name="29" /><span class="True">      29:</span>     <span class="b">handler_t</span>        <span class="b">handler</span><span class="f">;</span>    <span class="k">/* handler for syscalls */</span>
<a name="30" /><span class="True">      30:</span>     <span class="m">unsigned</span> <span class="m">char</span>        <span class="b">pers_low</span><span class="f">;</span>    <span class="k">/* lowest personality */</span>
<a name="31" /><span class="True">      31:</span>     <span class="m">unsigned</span> <span class="m">char</span>        <span class="b">pers_high</span><span class="f">;</span>    <span class="k">/* highest personality */</span>
<a name="32" /><span class="True">      32:</span>     <span class="m">unsigned</span> <span class="m">long</span>        <span class="f">*</span><span class="b">signal_map</span><span class="f">;</span>    <span class="k">/* signal mapping */</span>
<a name="33" /><span class="True">      33:</span>     <span class="m">unsigned</span> <span class="m">long</span>        <span class="f">*</span><span class="b">signal_invmap</span><span class="f">;</span>    <span class="k">/* reverse signal mapping */</span>
<a name="34" /><span class="True">      34:</span>     <span class="m">struct</span> <span class="b">map_segment</span>    <span class="f">*</span><span class="b">err_map</span><span class="f">;</span>    <span class="k">/* error mapping */</span>
<a name="35" /><span class="True">      35:</span>     <span class="m">struct</span> <span class="b">map_segment</span>    <span class="f">*</span><span class="b">socktype_map</span><span class="f">;</span>    <span class="k">/* socket type mapping */</span>
<a name="36" /><span class="True">      36:</span>     <span class="m">struct</span> <span class="b">map_segment</span>    <span class="f">*</span><span class="b">sockopt_map</span><span class="f">;</span>    <span class="k">/* socket option mapping */</span>
<a name="37" /><span class="True">      37:</span>     <span class="m">struct</span> <span class="b">map_segment</span>    <span class="f">*</span><span class="b">af_map</span><span class="f">;</span>    <span class="k">/* address family mapping */</span>
<a name="38" /><span class="True">      38:</span>     <span class="m">struct</span> <span class="b">module</span>        <span class="f">*</span><span class="b">module</span><span class="f">;</span>    <span class="k">/* module context of the ed. */</span>
<a name="39" /><span class="True">      39:</span>     <span class="m">struct</span> <span class="b">exec_domain</span>    <span class="f">*</span><span class="b">next</span><span class="f">;</span>        <span class="k">/* linked list (internal) */</span>
<a name="40" /><span class="True">      40:</span> <span class="f">}</span><span class="f">;</span>
<a name="41" /><span class="True">      41:</span> 
<a name="42" /><span class="True">      42:</span> <span class="k">/*</span>
<a name="43" /><span class="True">      43:</span> <span class="k"> * Return the base personality without flags.</span>
<a name="44" /><span class="True">      44:</span> <span class="k"> */</span>
<a name="45" /><span class="True">      45:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cGVyc29uYWxpdHlfMA__"><span class="b">personality</span></a><span class="f">(</span><span class="b">pers</span><span class="f">)</span>    <span class="f">(</span><span class="b">pers</span> <span class="f">&amp;</span> <span class="b">PER_MASK</span><span class="f">)</span>
<a name="46" /><span class="True">      46:</span> 
<a name="47" /><span class="True">      47:</span> 
<a name="48" /><span class="True">      48:</span> <span class="k">/*</span>
<a name="49" /><span class="True">      49:</span> <span class="k"> * Change personality of the currently running process.</span>
<a name="50" /><span class="True">      50:</span> <span class="k"> */</span>
<a name="51" /><span class="True">      51:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_c2V0X3BlcnNvbmFsaXR5XzA_"><span class="b">set_personality</span></a><span class="f">(</span><span class="b">pers</span><span class="f">)</span> \
<a name="52" /><span class="True">      52:</span>     <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3VycmVudF8w"><span class="b">current</span></a><span class="f">-&gt;</span><a href="cpu.c_macros_noref.html#_cGVyc29uYWxpdHlfMA__"><span class="b">personality</span></a> <span class="f">==</span> <span class="f">(</span><span class="b">pers</span><span class="f">)</span><span class="f">)</span> <span class="f">?</span> <span class="c">0</span> <span class="f">:</span> <span class="b">__set_personality</span><span class="f">(</span><span class="b">pers</span><span class="f">)</span><span class="f">)</span>
<a name="53" /><span class="True">      53:</span> 
<a name="54" /><span class="True">      54:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* _LINUX_PERSONALITY_H */</span>
<a name="55" /><span class="True">      55:</span> </pre>
  </body>
</html>
